Currently, the code makes it a bit hard to "force" motion planner settings, since it just accesses the fields directly (no get/set functions). So for now I just tuck away a copy of the "real" settings then overwrite the active ones to what I need.
I'm not planning on releasing this code so I don't mind maintaining my own branch - it's just a bit of a headache having to change stuff that won't be used, so I like to clean out stuff that obfuscates things - thanks to git that's easy. If native arcs are only useful for "special situations" then I think I'll just rely on linear segments for now. It's one less thing for our customers to fiddle with and break, too.
With TCPC, I don't really want the F word doing double duty as a linear or angular feed depending on the context. In TCPC mode by definition there is no tool (control point) movement relative to the work if only changing the tool orientation.
The main problem is that there might be vastly different movement rate in two very similar circumstances:
F60
G0 X0Y0Z0A0C0 (move somewhere)
case 1:
G1 X0.001 A30
case 2:
G1 X0.000 A30
Case 1 is mixed angular/linear, so it rotates real fast because the small distance theoretically takes only 1ms, hence rotates 30,000 deg/sec.
Case 2 rotates at 2 deg/sec (pure angular at 60 deg/min).
I think it might be better for me to add a field to the motion planner settings to specify "max angular feed rate" rather than having to change the F number depending on whether there is a linear move or not.
Related question:
It's hard (and hazardous) to get
this 5-axis stuff working on a real machine, so I would like to be able
to use the MPG to advance the G-code program execution by small increments. For example, each notch of the handwheel could be 10ms
"time" increment.
So do you have any general suggestions as to the best approach for this? I just don't want to go down the wrong track since there's a lot of work to be done. No problem feeding in the MPG signal, but I'm not sure about the best way to "throttle" the segment download process, and how to split linear segments up into smaller time intervals.